package com.xinke.edu.mypetadoption.util;

import com.xinke.edu.mypetadoption.Activity.adapter.ShoppingCartAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * 购物车管理器，使用单例模式管理全局购物车数据
 */
public class ShoppingCartManager {
    private static volatile ShoppingCartManager instance;
    private List<ShoppingCartAdapter.CartItem> cartItems;

    // 私有构造函数
    private ShoppingCartManager() {
        cartItems = new ArrayList<>();
    }

    // 获取单例实例
    public static ShoppingCartManager getInstance() {
        if (instance == null) {
            synchronized (ShoppingCartManager.class) {
                if (instance == null) {
                    instance = new ShoppingCartManager();
                }
            }
        }
        return instance;
    }

    // 添加商品到购物车
    public void addItem(String name, double price, int quantity, String imageUrl, int productId) {
        // 检查是否已存在该商品
        for (ShoppingCartAdapter.CartItem item : cartItems) {
            if (item.getProductId() == productId) {
                // 已存在则增加数量
                item.setQuantity(item.getQuantity() + quantity);
                return;
            }
        }
        // 不存在则添加新商品
        cartItems.add(new ShoppingCartAdapter.CartItem(name, price, quantity, imageUrl, productId));
    }

    // 获取购物车所有商品
    public List<ShoppingCartAdapter.CartItem> getCartItems() {
        return new ArrayList<>(cartItems); // 返回副本，避免外部直接修改
    }

    // 设置购物车商品列表
    public void setCartItems(List<ShoppingCartAdapter.CartItem> items) {
        cartItems.clear();
        if (items != null) {
            cartItems.addAll(items);
        }
    }

    // 移除商品
    public void removeItem(int productId) {
        for (int i = 0; i < cartItems.size(); i++) {
            if (cartItems.get(i).getProductId() == productId) {
                cartItems.remove(i);
                break;
            }
        }
    }

    // 更新商品数量
    public void updateItemQuantity(int productId, int quantity) {
        for (ShoppingCartAdapter.CartItem item : cartItems) {
            if (item.getProductId() == productId) {
                item.setQuantity(quantity);
                break;
            }
        }
    }

    // 清空购物车
    public void clear() {
        cartItems.clear();
    }

    // 计算总价
    public double calculateTotalPrice() {
        double totalPrice = 0.0;
        for (ShoppingCartAdapter.CartItem item : cartItems) {
            totalPrice += item.getPrice() * item.getQuantity();
        }
        return totalPrice;
    }

    // 获取商品总数
    public int getItemCount() {
        int count = 0;
        for (ShoppingCartAdapter.CartItem item : cartItems) {
            count += item.getQuantity();
        }
        return count;
    }

    // 判断购物车是否为空
    public boolean isEmpty() {
        return cartItems.isEmpty();
    }
}